home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 4 / The Arsenal Files 4 (Arsenal Computer).ISO / casm / au116-as.exe / UTIL / CD.CPP < prev    next >
C/C++ Source or Header  |  1994-05-08  |  1KB  |  64 lines

  1. #include "..\au.hpp"
  2. #include <errno.h>
  3.  
  4. /*************************************************************************/
  5. /* supplements the lacking turboc chdir() command */
  6.  
  7. STATUS cd(AU *au, char *string, char *old_dir, BYTE dispError)
  8. {
  9.     char temp_dir[FLENGTH];
  10.     char string2[FLENGTH];
  11.     int  temp;
  12.  
  13.     if (old_dir != NULL)
  14.         getcwd(old_dir, FLENGTH);
  15.  
  16.     if (string[0]=='\0')   /* Don't remove this, 10 lines down will cause you grief */
  17.         return SUCCESS;
  18.     strcpy(string2,string);
  19.  
  20.     /* strip the trialing \ if it exists */
  21.     temp = strlen(string2);
  22.     if (temp > 1 && string2[temp-1] == '\\' && string2[temp-2] != ':')
  23.         string2[temp-1] = '\0';
  24.     temp=0;
  25.  
  26.     getcwd(temp_dir,FLENGTH);      /* don't do anything if already there */
  27.     if (stricmp(string2, temp_dir)==0)
  28.         return SUCCESS;
  29.  
  30.     if (string2[1]==':')
  31.     {
  32.         temp=2;
  33.         setdisk(toupper(string2[0]) - 'A');
  34.     }
  35.  
  36.     if (string2[temp] != '\0')
  37.     {
  38.         if (chdir(string2+temp) == -1)
  39.         {
  40.             if (dispError)
  41.             {
  42.                 au_printf_error(au, "Invalid Directory '%s'", string2);
  43.                 exit(1);
  44.             }
  45.             else
  46.                 return FAILURE;
  47.         }
  48.     }
  49.     return SUCCESS;
  50. }
  51. /*************************************************************************/
  52. BOOLEAN dir_exists(AU *au, char *dir)
  53. {
  54.     char old_dir[FLENGTH];
  55.     int  retCode;
  56.  
  57.     retCode = cd(au, dir, old_dir, FALSE);
  58.     if (retCode < 0)
  59.         return FALSE;
  60.  
  61.     cd(au, old_dir);
  62.     return TRUE;
  63. }
  64.